package com.leo.leetcode.s100;

import javafx.concurrent.Task;

import java.util.Arrays;

/**
 * https://leetcode.com/problems/median-of-two-sorted-arrays/description/
 * @author xuexiaolei
 * @version 2017年10月27日
 */
public class T04MedianOfTwoSortedArrays {

    /**
     * 笨方法，合起两个串来找中位数的
     * @param nums1
     * @param nums2
     * @return
     */
    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int totalLength = nums1.length + nums2.length;
        int[] nums =new int[totalLength];
        int i = 0;
        int j = 0;

        //重写！！！
        while (true) {
            if ((i + j) == totalLength / 2 + 1) {
                break;
            }
            if (nums1[i] < nums2[j]) {
                nums[i + j] = nums1[i];
                i++;
            } else {
                nums[i + j] = nums2[j];
                j++;
            }
        }
//        System.out.println(Arrays.toString(nums));
        if (totalLength % 2 == 1){
            return nums[totalLength/2];
        }else {
            return ((double) nums[totalLength/2-1] + nums[totalLength/2])/2;
        }
    }

    /**
     * 用两个指针分别表示nums1，nums2的中间位置
     * 然后不断二分跳转来找到中位数的位置
     * @param nums1
     * @param nums2
     * @return
     */
    public static double findMedianSortedArrays2(int[] nums1, int[] nums2) {
        int totalLength = nums1.length + nums2.length;
        double p1 = (double) nums1.length / 2;
        double p2 = (double) nums2.length / 2;
        while (true){
            if ( nums1[(int) Math.floor(p1)] > nums2[(int) Math.ceil(p2)] ){

            }
        }
    }


    public static void main(String[] args) {
//        int[] nums1 = new int[]{1, 2};
//        int[] nums2 = new int[]{3, 4};
//        int[] nums1 = new int[]{2};
//        int[] nums2 = new int[]{1,3,4};
        int[] nums1 = new int[]{1};
        int[] nums2 = new int[]{1};
        System.out.println(findMedianSortedArrays(nums1, nums2));
    }
}
